package com.st.bottomnavigation.service;


import com.alibaba.fastjson.JSONObject;

import java.util.Map;

import okhttp3.FormBody;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.HTTP;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;

/**
 * 测试
 */
public interface TestService {


    @POST("/user/code")
    @FormUrlEncoded
    Call<ResponseBody> sendCode(@Field("phone") String phone);

    /**
     * get请求（@Query注解）
     */
    @GET("getParam")
    Call<ResponseBody> get(@Query("username") String userName, @Query("password") String pwd);

    /**
     * get请求（@QueryMap注解）
     */
    @GET("getParam")
    Call<ResponseBody> getQueryMap(@QueryMap Map<String,String> map);

    /**
     * get请求（@Path注解）
     * @Header注解：添加请求头信息
     */
    @GET("getParam/{username}")
    Call<ResponseBody> getInPath(@Path("username") String userName, @Header("os") String os);

    /**
     * get请求（@Url注解）
     */
    @GET
    Call<ResponseBody> getUrl(@Url String url);

    /**
     * post请求（表单数据格式-@Field注解）
     */
    @POST("postForm")
    @FormUrlEncoded
    @Headers({"os:android","version:1.0"})
    Call<ResponseBody> postFrom(@Field("username") String username,@Field("password") String pwd);

    /**
     * post请求（表单数据格式-@FieldMap注解）
     */
    @POST("postForm")
    @FormUrlEncoded
    Call<ResponseBody> postFiledMap(@FieldMap Map<String,String> map);

    /**
     * post请求（表单数据格式-@Body注解）
     */
    @POST("postBody")
    Call<ResponseBody> postBody(@Body FormBody body);

    /**
     * post请求（json格式）
     */
    @POST("postJson")
    Call<ResponseBody> postJson(@Body RequestBody body);

    /**
     * 可手动指定请求方式，post请求时，hasBody = true
     */
    @HTTP(method = "GET", path = "test/getParam", hasBody = false)
    Call<ResponseBody> http(@Query("username") String userName, @Query("password") String pwd);


    @POST("upload")
    @Multipart
    Call<ResponseBody> upload(@Part MultipartBody.Part file);

    /**
     * 获取list数据
     */
    @GET("getList")
    Call<ResponseBody> getList();
}
